"use strict";
// let a: string = "我是字符串类型";
// a = 10;
// console.log(a);
// let u: undefined = undefined;
function fn() {
}
// ts 为什么适合做大型的项目。ts 规范比较严谨。
// 声明基本类型的变量约束
// let a: number = 10;
// let b: string = "10";
// let c: boolean = true;
// let d: undefined = undefined;
// let f: null = null;
// 声明一个数组
// [] 代表我们声明的是一个数组，number 代表的是数组的项的类型，
// let numArr: number[] = [1, 2, 3, 4];
// numArr.push(20);
// 上面这种写法还可以转换成 下面的写法
// Array 代表的你声明的是一个数组 number 代表的是数组中每一项的类型。
let numArr = [1, 2]; // 这种我们叫数组的泛型写法。
// 元组，数组中合并了不同类型的对象。
// string | number 联合类型，既可以是一个字符串，也可以是一个数字
// let tom: [string, number] = ['Tom', 25];
// tom.push(100);
// tom.push(100);
// tom[2] = 'wdwqd';
// console.log(tom);
// let tom: [string, number] = ['12', 24];
// 使用元组的时候，我们指定几项，就是几项，一般不多追加。
// 类型推论：
let a = 20; // -> let a: number = 20 
// 像上面这种写法，ts 会自动根据，后面的赋值的类型，来推断出变量的类型，我们称为类型推论。
let b;
// 如果没有初始赋值的话，ts会把其推论成 any 类型。
// any 是任意类型。
b = 20;
b = "30";
let arr = []; // 这种的arr 是any 类型。
// arr.push(1)
